<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Selenium (software)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Selenium_(software)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Selenium_software rootpage-Selenium_software skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Selenium (software)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">Selenium</th></tr><tr><td colspan="2" class="infobox-image logo"><span typeof="mw:File"></span></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">2004<span style="display:none"> (<span class="bday dtstart published updated">2004</span>)</span></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">4.34.0<sup id="cite_ref-wikidata-a41c2050ebec716a82d0b419f6ad001f982d0db5-v20_1-0" class="reference"><a href="#cite_note-wikidata-a41c2050ebec716a82d0b419f6ad001f982d0db5-v20-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
/ 29 June 2025<span style="display:none"> (<span class="bday dtstart published updated">29 June 2025</span>)</span></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Repository_(version_control)" title="Repository (version control)">Repository</a></th><td class="infobox-data"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */
.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}
/* end https://en.wikipedia.org/ */
</style><div class="plainlist"><ul><li><span class="url"><a rel="nofollow" class="external text" href="https://github.com/SeleniumHQ/">github<wbr>.com<wbr>/SeleniumHQ<wbr>/</a></span> </li></ul>
</div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data">Selenium Server: <a href="Java_(programming_language)" title="Java (programming language)">Java</a>; Selenium WebDriver (works without Selenium Server), official support: <a href="JavaScript" title="JavaScript">JavaScript</a> (<a href="Node.js" title="Node.js">Node.js</a>), <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a> or <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Software_testing" title="Software testing">Software testing</a> <a href="Software_framework" title="Software framework">framework</a> for <a href="Web_application" title="Web application">web applications</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Apache_License_2.0" class="mw-redirect" title="Apache License 2.0">Apache License 2.0</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://selenium.dev/">selenium<wbr>.dev</a></span> <span class="penicon autoconfirmed-show"></span></td></tr></tbody></table>
<p><b>Selenium</b> is an <a href="Open_source" title="Open source">open source</a> umbrella project for a range of tools and libraries aimed at supporting <a href="Browser_automation" class="mw-redirect" title="Browser automation">browser automation</a>.<sup id="cite_ref-selenium_dev_3-0" class="reference"><a href="#cite_note-selenium_dev-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> It provides a playback tool for authoring <a href="Functional_testing" title="Functional testing">functional tests</a> across most modern <a href="Web_browser" title="Web browser">web browsers</a>, without the need to learn a test <a href="Scripting_language" title="Scripting language">scripting language</a> (Selenium IDE).<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> It also provides a test <a href="Domain-specific_language" title="Domain-specific language">domain-specific language</a> (Selenese) to write tests in a number of popular programming languages, including <a href="JavaScript" title="JavaScript">JavaScript</a> (<a href="Node.js" title="Node.js">Node.js</a>), <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a>, <a href="Java_(software_platform)" title="Java (software platform)">Java</a>, <a href="Perl" title="Perl">Perl</a>, <a href="PHP" title="PHP">PHP</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a> and <a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a>. Selenium runs on <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="Linux" title="Linux">Linux</a>, and <a href="MacOS" title="MacOS">macOS</a>. It is <a href="Open-source_software" title="Open-source software">open-source software</a> released under the <a href="Apache_License_2.0" class="mw-redirect" title="Apache License 2.0">Apache License 2.0</a>.
</p><p>Selenium is an open-source automation framework for web applications, enabling testers and developers to automate browser interactions and perform functional testing. With versatile tools like WebDriver, Selenium supports various programming languages and facilitates cross-browser testing, making it a go-to choice for efficient and scalable web automation.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Selenium was originally developed by Jason Huggins in 2004 as an internal tool at <a href="ThoughtWorks" class="mw-redirect" title="ThoughtWorks">ThoughtWorks</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Huggins was later joined by other programmers and testers at ThoughtWorks, before Paul Hammant joined the team and steered the development of the second mode of operation that would later become "Selenium Remote Control" (RC). The tool was open sourced that year.
</p><p>In 2005 Dan Fabulich and Nelson Sproul (with help from Pat Lightbody) made an offer to accept a series of patches that would transform Selenium-RC into what it became best known for. In the same meeting, the steering of Selenium as a project would continue as a committee, with Huggins and Hammant being the ThoughtWorks representatives.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>In 2007, Huggins joined Google. Together with others like Jennifer Bevan, he continued with the development and stabilization of Selenium RC. At the same time, Simon Stewart at ThoughtWorks developed a superior browser automation tool called WebDriver. In 2009, after a meeting between the developers at the Google Test Automation Conference, it was decided to merge the two projects, and call the new project Selenium WebDriver, or Selenium 2.0.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>In 2008, Philippe Hanrigou (then at ThoughtWorks) made "Selenium Grid", which provides a hub allowing the running of multiple Selenium tests concurrently on any number of local or remote systems, thus minimizing test execution time. Grid offered, as open source, a similar capability to the internal/private Google cloud for Selenium RC. Pat Lightbody had already made a private cloud for "HostedQA" which he went on to sell to Gomez, Inc.
</p><p>The name Selenium comes from a joke made by Huggins in an email, mocking a competitor named <a href="Mercury_Interactive" title="Mercury Interactive">Mercury</a>, saying that you can cure <a href="Mercury_(element)" title="Mercury (element)">mercury</a> poisoning by taking selenium supplements. The others that received the email took the name and ran with it.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Components">Components</h2></div>
<p>Selenium is composed of several components with each taking on a specific role in aiding the development of web application <a href="Test_automation" title="Test automation">test automation</a>.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Selenium_IDE">Selenium IDE</h3></div>
<p>Selenium IDE is a complete <a href="Integrated_development_environment" title="Integrated development environment">integrated development environment</a> (IDE) for Selenium tests. It is implemented as a <a href="Add-on_(Mozilla)" title="Add-on (Mozilla)">Firefox Add-On</a> and as a <a href="Chrome_Web_Store" title="Chrome Web Store">Chrome Extension</a>. It allows for recording, editing and debugging of functional tests. It was previously known as Selenium Recorder. Selenium-IDE was originally created by Shinya Kasatani and donated to the Selenium project in 2006. Selenium IDE began being actively maintained in 2018.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p><p>Scripts may be automatically recorded and edited manually providing <a href="Autocomplete" title="Autocomplete">autocompletion</a> support and the ability to move commands around quickly. Scripts are recorded in <i>Selenese</i>, a special test scripting language for Selenium. Selenese provides commands for performing actions in a browser (click a link, select an option) and for retrieving data from the resulting pages. Selenese serves as the language for composing Selenium Commands, which are utilized in the testing of web applications. These commands, tailored to the HTML tags of UI elements, facilitate the verification of their existence. They guide Selenium in comprehending the specific actions or operations to execute.
</p>
<div class="mw-heading mw-heading3"><h3 id="Selenium_client_API">Selenium client API</h3></div>
<p>As an alternative to writing tests in Selenese, tests can also be written in various programming languages. These tests then communicate with Selenium by calling methods in the Selenium Client API. Selenium currently provides client APIs for <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="JavaScript" title="JavaScript">JavaScript</a>, <a href="R_(programming_language)" title="R (programming language)">R</a> and <a href="Python_(programming_language)" title="Python (programming language)">Python</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Selenium_Remote_Control">Selenium Remote Control</h3></div>
<p>Selenium Remote Control (RC) is a server, written in <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, that accepts commands for the browser via <a href="Hypertext_Transfer_Protocol" class="mw-redirect" title="Hypertext Transfer Protocol">HTTP</a>. RC makes it possible to write automated tests for a web application in any programming language, which allows for better integration of Selenium in existing unit test frameworks. To make writing tests easier, Selenium project currently provides client drivers for <a href="PHP" title="PHP">PHP</a>, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href=".NET_Framework" title=".NET Framework">.NET</a>, <a href="Perl" title="Perl">Perl</a> and <a href="Java_(programming_language)" title="Java (programming language)">Java</a>. The Java driver can also be used with <a href="JavaScript" title="JavaScript">JavaScript</a> (via the <a href="Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a> engine). An instance of selenium RC server is needed to launch html test case - which means that the port should be different for each parallel run. However, for Java/PHP test case only one Selenium RC instance needs to be running continuously.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>Selenium Remote Control was a refactoring of Driven Selenium or Selenium B designed by Paul Hammant, credited with Jason as co-creator of Selenium. The original version directly launched a process for the browser in question, from the test language of Java, .NET, Python or Ruby. The wire protocol (called 'Selenese' in its day) was reimplemented in each language port. After the refactor by Dan Fabulich and Nelson Sproul (with help from Pat Lightbody) there was an intermediate daemon process between the driving test script and the browser. The benefits included the ability to drive remote browsers and the reduced need to port every line of code to an increasingly growing set of languages. <i>Selenium Remote Control</i> completely took over from the Driven Selenium code-line in 2006. The browser pattern for 'Driven'/'B' and 'RC' was response/request, which subsequently became known as <a href="Comet_(programming)" title="Comet (programming)">Comet</a>.
</p><p>Selenium RC served as the flagship testing framework of the entire project of selenium for a long-standing time. And significantly Selenium RC is the first and foremost automated web testing tool that enabled users to adopt their preferred programming language.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p><p>With the release of Selenium 2, Selenium RC has been officially deprecated in favor of Selenium WebDriver.
</p>
<div class="mw-heading mw-heading3"><h3 id="Selenium_WebDriver">Selenium WebDriver</h3></div>
<p>At the core of Selenium is Selenium WebDriver, an interface to write instructions that work interchangeably across browsers. It is the successor to Selenium RC. Selenium WebDriver accepts commands (sent in Selenese, or via a Client API) and sends them to a browser. This is implemented through a browser-specific browser driver, which sends commands to a browser and retrieves results. Most browser drivers actually launch and access a browser application (such as <a href="Firefox" title="Firefox">Firefox</a>, <a href="Google_Chrome" title="Google Chrome">Google Chrome</a>, <a href="Internet_Explorer" title="Internet Explorer">Internet Explorer</a>, <a href="Safari_(web_browser)" title="Safari (web browser)">Safari</a>, or <a href="Microsoft_Edge" title="Microsoft Edge">Microsoft Edge</a>); there is also an <a href="HtmlUnit" title="HtmlUnit">HtmlUnit</a> browser driver, which simulates a browser using the headless browser HtmlUnit.
</p><p>Unlike in Selenium 1, where the Selenium server was necessary to run tests, Selenium WebDriver does not need a special server to execute tests. Instead, the WebDriver directly starts a browser instance and controls it. However, Selenium Grid can be used with WebDriver to execute tests on remote systems (see below). Where possible, WebDriver uses native operating system level functionality rather than browser-based JavaScript commands to drive the browser. This bypasses problems with subtle differences between native and JavaScript commands, including security restrictions.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p><p>As of early 2012, Simon Stewart (inventor of WebDriver), who was then with Google, and David Burns of Mozilla were negotiating with the <a href="W3C" class="mw-redirect" title="W3C">W3C</a> to make WebDriver an Internet standard. In July 2012, the working draft was released and the recommendation followed in June 2018.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> Selenium WebDriver (Selenium 2.0) is fully implemented and supported in <a href="JavaScript" title="JavaScript">JavaScript</a> (<a href="Node.js" title="Node.js">Node.js</a>), <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="Java_(programming_language)" title="Java (programming language)">Java</a>, <a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a>, and <a href="C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>. As of 2021, Selenium 4 is a release candidate.<sup id="cite_ref-selenium.dev_19-0" class="reference"><a href="#cite_note-selenium.dev-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading4"><h4 id="Examples">Examples</h4></div>
<p>Below are some of the simplest instructions one can make:
</p>
<div class="mw-heading mw-heading5"><h5 id="Python">Python</h5></div>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="kn">from</span> <span class="nn">selenium</span> <span class="kn">import</span> <span class="n">webdriver</span>
<span class="kn">from</span> <span class="nn">selenium.webdriver.common.by</span> <span class="kn">import</span> <span class="n">By</span>
<span class="kn">from</span> <span class="nn">selenium.webdriver.common.keys</span> <span class="kn">import</span> <span class="n">Keys</span>
<span class="kn">from</span> <span class="nn">selenium.webdriver.support.ui</span> <span class="kn">import</span> <span class="n">WebDriverWait</span>
<span class="kn">from</span> <span class="nn">selenium.webdriver.support.expected_conditions</span> <span class="kn">import</span> <span class="n">presence_of_element_located</span>
<span class="c1">#This example requires Selenium WebDriver 3.13 or newer</span>
<span class="k">with</span> <span class="n">webdriver</span><span class="o">.</span><span class="n">Firefox</span><span class="p">()</span> <span class="k">as</span> <span class="n">driver</span><span class="p">:</span>
<span class="n">wait</span> <span class="o">=</span> <span class="n">WebDriverWait</span><span class="p">(</span><span class="n">driver</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
<span class="n">driver</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"https://google.com/ncr"</span><span class="p">)</span>
<span class="n">driver</span><span class="o">.</span><span class="n">find_element</span><span class="p">(</span><span class="n">By</span><span class="o">.</span><span class="n">NAME</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">)</span><span class="o">.</span><span class="n">send_keys</span><span class="p">(</span><span class="s2">"cheese"</span> <span class="o">+</span> <span class="n">Keys</span><span class="o">.</span><span class="n">RETURN</span><span class="p">)</span>
<span class="n">first_result</span> <span class="o">=</span> <span class="n">wait</span><span class="o">.</span><span class="n">until</span><span class="p">(</span><span class="n">presence_of_element_located</span><span class="p">((</span><span class="n">By</span><span class="o">.</span><span class="n">CSS_SELECTOR</span><span class="p">,</span> <span class="s2">"h3"</span><span class="p">)))</span>
<span class="nb">print</span><span class="p">(</span><span class="n">first_result</span><span class="o">.</span><span class="n">get_attribute</span><span class="p">(</span><span class="s2">"textContent"</span><span class="p">))</span>
</pre></div>
<div class="mw-heading mw-heading5"><h5 id="Java">Java</h5></div>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.By</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.Keys</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.WebDriver</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.WebElement</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.firefox.FirefoxDriver</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.openqa.selenium.support.ui.WebDriverWait</span><span class="p">;</span>
<span class="kn">import static</span><span class="w"> </span><span class="nn">org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.time.Duration</span><span class="p">;</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloSelenium</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">WebDriver</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FirefoxDriver</span><span class="p">();</span>
<span class="w"> </span><span class="n">WebDriverWait</span><span class="w"> </span><span class="n">wait</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">WebDriverWait</span><span class="p">(</span><span class="n">driver</span><span class="p">,</span><span class="w"> </span><span class="n">Duration</span><span class="p">.</span><span class="na">ofSeconds</span><span class="p">(</span><span class="mi">10</span><span class="p">));</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">driver</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"https://google.com/ncr"</span><span class="p">);</span>
<span class="w"> </span><span class="n">driver</span><span class="p">.</span><span class="na">findElement</span><span class="p">(</span><span class="n">By</span><span class="p">.</span><span class="na">name</span><span class="p">(</span><span class="s">"q"</span><span class="p">)).</span><span class="na">sendKeys</span><span class="p">(</span><span class="s">"cheese"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Keys</span><span class="p">.</span><span class="na">ENTER</span><span class="p">);</span>
<span class="w"> </span><span class="n">WebElement</span><span class="w"> </span><span class="n">firstResult</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">wait</span><span class="p">.</span><span class="na">until</span><span class="p">(</span><span class="n">presenceOfElementLocated</span><span class="p">(</span><span class="n">By</span><span class="p">.</span><span class="na">cssSelector</span><span class="p">(</span><span class="s">"h3"</span><span class="p">)));</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">firstResult</span><span class="p">.</span><span class="na">getAttribute</span><span class="p">(</span><span class="s">"textContent"</span><span class="p">));</span>
<span class="w"> </span><span class="n">driver</span><span class="p">.</span><span class="na">quit</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<div class="mw-heading mw-heading5"><h5 id="C#">C#</h5></div>
<div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span class="k">using</span><span class="w"> </span><span class="nn">OpenQA.Selenium</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">OpenQA.Selenium.Firefox</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">OpenQA.Selenium.Support.UI</span><span class="p">;</span>
<span class="k">using</span><span class="w"> </span><span class="nn">IWebDriver</span><span class="w"> </span><span class="n">driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FirefoxDriver</span><span class="p">;</span>
<span class="n">WebDriverWait</span><span class="w"> </span><span class="n">wait</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">WebDriverWait</span><span class="p">(</span><span class="n">driver</span><span class="p">,</span><span class="w"> </span><span class="n">TimeSpan</span><span class="p">.</span><span class="n">FromSeconds</span><span class="p">(</span><span class="m">10</span><span class="p">));</span>
<span class="n">driver</span><span class="p">.</span><span class="n">Navigate</span><span class="p">().</span><span class="n">GoToUrl</span><span class="p">(</span><span class="s">"https://www.google.com/"</span><span class="p">);</span>
<span class="n">driver</span><span class="p">.</span><span class="n">FindElement</span><span class="p">(</span><span class="n">By</span><span class="p">.</span><span class="n">Name</span><span class="p">(</span><span class="s">"q"</span><span class="p">)).</span><span class="n">SendKeys</span><span class="p">(</span><span class="s">"cheese"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">Keys</span><span class="p">.</span><span class="n">Enter</span><span class="p">);</span>
<span class="n">wait</span><span class="p">.</span><span class="n">Until</span><span class="p">(</span><span class="n">webDriver</span><span class="w"> </span><span class="o">=></span><span class="w"> </span><span class="n">webDriver</span><span class="p">.</span><span class="n">FindElement</span><span class="p">(</span><span class="n">By</span><span class="p">.</span><span class="n">CssSelector</span><span class="p">(</span><span class="s">"h3"</span><span class="p">)).</span><span class="n">Displayed</span><span class="p">);</span>
<span class="n">IWebElement</span><span class="w"> </span><span class="n">firstResult</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">driver</span><span class="p">.</span><span class="n">FindElement</span><span class="p">(</span><span class="n">By</span><span class="p">.</span><span class="n">CssSelector</span><span class="p">(</span><span class="s">"h3"</span><span class="p">));</span>
<span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">firstResult</span><span class="p">.</span><span class="n">GetAttribute</span><span class="p">(</span><span class="s">"textContent"</span><span class="p">));</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Selenium_Grid">Selenium Grid</h3></div>
<p>Selenium Grid is a server that allows tests to use web browser instances running on remote machines. With Selenium Grid, one server acts as the central hub. Tests contact the hub to obtain access to browser instances. The hub has a list of servers that provide access to browser instances (WebDriver nodes), and lets tests use these instances. Selenium Grid allows running tests in parallel on multiple machines and to manage different browser versions and browser configurations centrally (instead of in each individual test).
</p><p>The ability to run tests on remote browser instances is useful to spread the load of testing across several machines and to run tests in browsers running on different platforms or operating systems. The latter is particularly useful in cases where not all browsers to be used for testing can run on the same platform.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Appium" title="Appium">Appium</a>, mobile and desktop apps automation using WebDriver</li>
<li><a href="Acceptance_testing" title="Acceptance testing">Acceptance testing</a></li>
<li><a href="Capybara_(software)" title="Capybara (software)">Capybara (software)</a></li>
<li><a href="Given-When-Then" title="Given-When-Then">Given-When-Then</a></li>
<li><a href="List_of_web_testing_tools" title="List of web testing tools">List of web testing tools</a></li>
<li><a href="https://www.mediawiki.org/wiki/Selenium" class="extiw external" title="mw:Selenium">MediaWiki Selenium</a></li>
<li><a href="Regression_testing" title="Regression testing">Regression testing</a></li>
<li><a href="Robot_Framework" title="Robot Framework">Robot Framework</a></li>
<li><a href="Cypress_(software)" title="Cypress (software)">Cypress</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-wikidata-a41c2050ebec716a82d0b419f6ad001f982d0db5-v20-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-wikidata-a41c2050ebec716a82d0b419f6ad001f982d0db5-v20_1-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.34.0">"Release 4.34.0"</a>. June 29, 2025<span class="reference-accessdate">. Retrieved <span class="nowrap">July 17,</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/downloads/">"Downloads"</a>. <i>Selenium</i>.</cite></span>
</li>
<li id="cite_note-selenium_dev-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-selenium_dev_3-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/documentation/">"The Selenium Browser Automation Project"</a>. <i>selenium.dev</i>. March 16, 2020<span class="reference-accessdate">. Retrieved <span class="nowrap">November 1,</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFAbdullaievIbrahimova2020" class="citation journal cs1 cs1-prop-long-vol">Abdullaiev, O.A.; Ibrahimova, L. V. (2020). <a rel="nofollow" class="external text" href="http://ir.lib.vntu.edu.ua/bitstream/handle/123456789/29630/9920.pdf?sequence=3">"Review of testing software: Selenium software"</a> <span class="cs1-format">(PDF)</span>. <i>Вінницький національний технічний університет</i>. УДК 004.457.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/about/">"About Selenium"</a>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/history/">"Selenium History"</a>. <i>www.selenium.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">August 11,</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://thenewcircle.com/static/bookshelf/selenium_tutorial/project.html">"The Selenium Project"</a>. <i>thenewcircle.com</i>. NewCircle<span class="reference-accessdate">. Retrieved <span class="nowrap">June 29,</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFKrill2011" class="citation journal cs1">Krill, Paul (April 6, 2011). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110505181545/http://news.techworld.com/applications/3272444/open-source-selenium-web-app-test-suite-to-support-iphone-and-android/">"Open source Selenium web app test suite to support iPhone and Android"</a>. <i>InfoWorld</i>. Archived from <a rel="nofollow" class="external text" href="http://news.techworld.com/applications/3272444/open-source-selenium-web-app-test-suite-to-support-iphone-and-android/">the original</a> on May 5, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">May 9,</span> 2012</span>. <q>Selenium was so named because Huggins, dissatisfied with testing tools on the market, was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software. The name, Selenium, was selected because selenium mineral supplements serve as a cure for mercury poisoning, Huggins explained.</q></cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFMoizuddin2018" class="citation web cs1">Moizuddin, Khaja (June 7, 2018). <a rel="nofollow" class="external text" href="https://dzone.com/articles/components-of-selenium-automation-tool">"Components of the Selenium Automation Tool"</a>. <i>dzone.com</i>. DevOps Zone<span class="reference-accessdate">. Retrieved <span class="nowrap">July 10,</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://testingpodcast.com/230-its-back-selenium-ide-reborn-with-dave-haeffner/">"It's back! Selenium IDE Reborn with Dave Haeffner"</a>. <i>testingpodcast.com</i>. December 24, 2018.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFDave2018" class="citation web cs1">Dave, Tour de (August 6, 2018). <a rel="nofollow" class="external text" href="https://seleniumhq.wordpress.com/2018/08/06/selenium-ide-tng/">"Selenium IDE Is Dead, Long Live Selenium IDE!"</a>. <i>Selenium IDE Official Blog</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 27,</span> 2019</span> – via seleniumhq.wordpress.com.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFColantonio2018" class="citation web cs1">Colantonio, Joe (November 27, 2018). <a rel="nofollow" class="external text" href="https://testguild.com/selenium-ide/">"Stunning return of Selenium IDE"</a>. <i>testguild.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 27,</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite id="CITEREFSargent2019" class="citation web cs1">Sargent, Al (March 19, 2019). <a rel="nofollow" class="external text" href="https://applitools.com/blog/why-selenium-ide-2019">"List of new Selenium IDE features"</a>. <i>applitools.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 18,</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.seleniumhq.org/projects/remote-control/">"Selenium Remote-Control"</a>. <i>seleniumhq.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">November 13,</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/documentation/en/legacy_docs/selenium_rc/">"Selenium 1 (Selenium RC) :: Documentation for Selenium"</a>. <i>www.selenium.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">December 20,</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite id="CITEREFsparkdatabox_author2019" class="citation web cs1">sparkdatabox_author (October 16, 2019). <a rel="nofollow" class="external text" href="https://sparkdatabox.com/blog/selenium/">"Selenium | Spark Databox"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">December 20,</span> 2020</span>.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite web}}</code>: </span><span class="cs1-visible-error citation-comment"><code class="cs1-code">|last=</code> has generic name (help)</span></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.aosabook.org/en/selenium.html">"The Architecture of Open Source Applications: Selenium WebDriver"</a>. <i>aosabook.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">February 7,</span> 2016</span>.</cite></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite id="CITEREFSmith2018" class="citation web cs1">Smith, Michael (June 5, 2018). <a rel="nofollow" class="external text" href="https://www.w3.org/blog/2018/06/webdriver-recommendation/">"WebDriver motors on to W3C Recommendation"</a>. <i>W3C Blog</i><span class="reference-accessdate">. Retrieved <span class="nowrap">September 10,</span> 2018</span>.</cite></span>
</li>
<li id="cite_note-selenium.dev-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-selenium.dev_19-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/downloads/">"Downloads"</a>. <i>selenium.dev</i><span class="reference-accessdate">. Retrieved <span class="nowrap">September 29,</span> 2021</span>.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.selenium.dev/documentation/en/grid/">"Selenium Grid"</a>. <i>The Selenium Browser Automation Project</i><span class="reference-accessdate">. Retrieved <span class="nowrap">September 9,</span> 2020</span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://selenium.dev/">Official website</a></span></span> </li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox390" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/7712939-8">Germany</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-11" href="https://en.wikipedia.org/wiki/?title=Selenium_(software)&oldid=1295033682">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>